import { defineStore } from 'pinia'

// 你可以对 `defineStore()` 的返回值进行任意命名，但最好使用 store 的名字，同时以 `use` 开头且以 `Store` 结尾。(比如 `useUserStore`，`useCartStore`，`useProductStore`)
// 第一个参数是你的应用中 Store 的唯一 ID。
// 第二个参数是一个返回 state 的函数。
// 选项式 API
// export const useUserStore = defineStore('user', {
//     state: () => ({
//         name: 'Evan You',
//         age: 18,
//     }),
//     getters: {
//         // 你可以在 getters 中定义任意的 getter
//         doubleAge: (state) => state.age * 2,
//     },
//     actions: {
//         // 你可以在 actions 中定义任意的 action
//         async changeName(newName) {
//             this.name = newName
//         },
//     },
// persist: {
//     enabled: true, // 启用持久化
//         strategies: [
//             { storage: sessionStorage, paths: ["user"] },
//             // { storage: localStorage, paths: ['accessToken'] },
//         ],
// }
// })

import { ref, computed } from 'vue';
// 组合式 API
// export const useUserStore = defineStore('user', () => {
//     const count = ref(0); // 相当于 state
//     const doubleCount = computed(() => count.value * 2); // 相当于 getters
//     const increment = () => count.value++; // 相当于 action

//     return {
//         count,
//         increment,
//     }
// })


export const useUserStore = defineStore('user', () => {

    const user = ref({});
    const logout = () => {
        user.value = {};
        sessionStorage.clear();
    };

    return {
        user,
        logout
    }
}, {
    persist: {
        enabled: true, // 启用持久化
        strategies: [
            { storage: sessionStorage, paths: ["user"] },
            // { storage: localStorage, paths: ['accessToken'] },
        ],
    }
})